home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 7: Sunsite
/
Linux Cubed Series 7 - Sunsite Vol 1.iso
/
system
/
misc
/
ms-cardr.c
/
ms-cardr
Wrap
Text File
|
1993-03-01
|
3KB
|
113 lines
Article 28977 of comp.os.linux:
Path: samba!concert!gatech!howland.reston.ans.net!spool.mu.edu!uunet!news.claremont.edu!nntp-server.caltech.edu!thefru
From: thefru@cco.caltech.edu (Your Worst Nightmare)
Newsgroups: comp.os.linux
Subject: MS-Cardfile Reader for Linux
Date: 1 Mar 1993 17:30:14 GMT
Organization: California Institute of Technology, Pasadena
Lines: 99
Message-ID: <1mth76INN54b@gap.caltech.edu>
NNTP-Posting-Host: punisher.caltech.edu
Hi all!
I don't know if this is the right group to put this on or if c.o.l.a is since I
don't nn too often. I found out a long time ago that it's harmful for my GPA.
I also don't know how many of you out there share my situation, but I'm an avid
MS-Windows user. Mostly for the sake of writing papers, spreadsheets etc.
While linux serves as my programming environment (and a superb one at that.)
The problem I had was that I couldn't access my cardfile data from linux, so I
wrote a little program that does it and prints it out to stdout. The format is
so trivial! I'm not sure if dosemu can do MS-Win yet, since I haven't
installed it. If it can, this is a moot point. If it can't - enjoy!
Oh yeah, one last thing. This program is really rough and is mostly one big
hack (hehe). I envision, one day, an x-app that will simulate cardfile, so you
can also add stuff in. Again, the usefulness may be nil if dosemu runs it
well, but hey, I'll look into that some other morning when I haven't slept for
two days... ;)
Allright - here's the source code for cardread.c:
/* CardRead V1.0
* A program that will read and print out Microsoft Cardfile files.
* By Dan 'Fru' Frumin
* March 1st, 1993
*/
#include <stdio.h>
#include <strings.h>
typedef struct {
char name[46];
char data[1000];
} INFO;
main(int argc, char **argv) {
FILE *fp;
char buf[81];
INFO *data;
int reccount, counter, len;
char c;
int i;
if (argc != 2) {
printf("Usage: %s file\n", argv[0]);
exit(-1);
}
fp = fopen(argv[1], "r");
if (!fp) {
printf("Error: %s couldn't open %s.\n", argv[0], argv[1]);
exit(-1);
}
fgets(buf, 4, fp);
if (strcmp(buf,"MGC")) {
printf("Error: %s isn't in Microsoft Cardfile format.\n", argv[1]);
exit(-1);
}
reccount = fgetc(fp);
data = (INFO *) malloc (reccount * sizeof(INFO));
for (i = 0; i < 12; i++, fgetc(fp));
for (counter = 0; counter < reccount; counter++) {
fgets(data[counter].name, 46, fp);
if (data[counter].name[0] == 0)
sprintf(data[counter].name, "NULL");
if (counter < reccount - 1)
for (i = 0; i < 7; i++, fgetc(fp));
}
counter = 0;
i = 0;
while((c = fgetc(fp)) != EOF) {
data[counter].data[i] = c;
i++;
if (c == 0) {
for (i = 0; i < 3; i++, fgetc(fp));
counter++;
i=0;
}
}
fclose(fp);
printf("=============================================\n");
for (counter = 0; counter < reccount; counter++) {
printf("%s\n", data[counter].name);
printf("---------------------------------------------\n");
printf("%s\n", data[counter].data);
printf("\n");
printf("=============================================\n");
}
}